#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行，
# 第2行注释表示.py文件本身使用标准UTF-8编码：
print('#############调试#############')
# 第一种方法：简单直接粗暴有效，就是用print()把可能有问题的变量打印出来看看：
# 用print()最大的坏处是将来还得删掉它，想想程序里到处都是print()，运行结果也会包含很多垃圾信息。
print('#############调试：第二种方法，使用assert断言#############')


# 第二种方法：凡是用print()来辅助查看的地方，都可以用断言（assert）来替代：
# 启动Python解释器时可以用-O参数来关闭assert：
def foo(s):
    assert s != 1, 's is zero'  # 断言为false才会执行，s为1时才为false
    return 10 / s


print(foo(2))
# 第三种方法：把print()替换为logging是第3种方式，和assert比，logging不会抛出错误，而且可以输出到文件：
print('#############调试：第三种方法，使用logging#############')
# 这就是logging的好处，它允许你指定记录信息的级别，有debug，info，warning，error等几个级别，
# 当我们指定level=INFO时，logging.debug就不起作用了。
import logging

logging.basicConfig(level=logging.DEBUG)
s = '0'
n = int(s)
logging.error('n = %d' % n)
# print(10 / n)
# 第四种方法：第4种方式是启动Python的调试器pdb，让程序以单步方式运行，可以随时查看运行状态。
